/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package State.ex2;

import State.Carte;

/**
 *
 * @author David
 */
public class ETAT_ATTENTE_CODE extends Etat{

    
    /**
     * Impossiblde de rentrer une nouvelle carte
     * @return ETAT_ATTENTE_CODE()
     */
    @Override
   public Etat insererCarte(Carte client, State.ex2.Distributeur dist){
        print("Carte déjà présente");
        return this;
    }
    
    /**
     * Si le nombre d'essai est inférieur a 3 et le code bon
     * on passe alors dans l'état ETAT_ATTENTE_OPERATION()
     * 
     * Si le code est faux on reste dans cet état mais on incrémente
     * la variable d'erreur du distributeur
     * 
     * Au bout de 3 erreur on avale la carte et on 
     * passe dans l'état ETAT_ATTENTE_CARTE()
     */
    @Override
    
    public Etat entrerCode(int code, State.ex2.Distributeur dist){
        
        if(dist.getErr()<3&&dist.getC().entrerCode(code)){
            dist.setErr(0);
            System.out.println("Code OK");

            return new ETAT_ATTENTE_OPERATION();
        }
        else if(!dist.getC().entrerCode(code)){
            System.out.println("Code Faux");
            dist.incémenteErr();
            if(dist.getErr() == 3){
                dist.getC().setDispo(false);
                System.out.println("Carte avalé");
                
                dist.setErr(0);
                return new ETAT_ATTENTE_CARTE();
            }
            return this;
        }
        return this;
    }
    
    
    /**
     * Impossible de retirer de l'argent
     * @return ETAT_ATTENTE_CODE()
     */
    @Override
    public Etat retirerEspece(int somme, State.ex2.Distributeur dist){
        print("En attente de code");
        return this;
    }
    
    
    /**
     * On retire la carte
     * @return ETAT_ATTENTE_CARTE()
     */
    @Override
     public Etat retirerCarte(State.ex2.Distributeur dist){
         print("Carte retirée");
         dist.setC(null);
         return new ETAT_ATTENTE_CARTE();
     }

    
    
}
